home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 2.toast / pc / sample code / quicktime / quicktimeintro / desktop sprites / start code / createsprites.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-10-06  |  2.3 KB  |  107 lines

  1.  
  2.  
  3. #ifndef _MAININCLUDES_
  4. #include "main.h"
  5. #endif
  6.  
  7. void CreateSpriteStuff (Rect *windowBounds, CGrafPtr windowPtr)
  8. {
  9.     OSErr err;
  10.     Rect bounds;
  11.  
  12.     // calculate the size of the destination
  13.     bounds = *windowBounds;
  14.     OffsetRect (&bounds, -bounds.left, -bounds.top);
  15.     gBounceBox = bounds;
  16.     InsetRect (&gBounceBox, 16, 16);
  17.  
  18. // Step 1.
  19. // Insert "CreateSpriteLayerGWorld.clp" here
  20.  
  21.     
  22.     if (gSpritePlane)
  23.     {
  24.         LockPixels (GetPortPixMap(gSpritePlane));
  25.         
  26.         gBackgroundColor.red = 0x1234;
  27.         gBackgroundColor.green = 0x0001;
  28.         gBackgroundColor.blue = 0x0044;
  29.         
  30.  
  31. // Step 2.
  32. // Insert "CreateSpriteWorld.clp" here
  33.  
  34.         
  35.         // create sprites
  36.         CreateSprites();
  37.     }
  38. }
  39.  
  40. void CreateSprites (void)
  41. {
  42.     long                lIndex;
  43.     Handle                hCompressedData = NULL;
  44.     PicHandle            hpicImage;
  45.     OSErr                nErr;
  46.     RGBColor            rgbcKeyColor;
  47.     
  48.     SetRect(&gDestRects[0], 132, 132, 132 + kSpaceShipWidth, 
  49.         132 + kSpaceShipHeight);
  50.     SetRect(&gDestRects[1], 50, 50, 50 + kSpaceShipWidth, 
  51.         50 + kSpaceShipHeight);
  52.     SetRect(&gDestRects[2], 100, 100, 100 + kSpaceShipWidth, 
  53.         100 + kSpaceShipHeight);
  54.     SetRect(&gDestRects[3], 130, 130, 130 + kSpaceShipWidth, 
  55.         130 + kSpaceShipHeight);
  56.  
  57.     gDeltas[0].h = -3;
  58.     gDeltas[0].v = 0;
  59.     gDeltas[1].h = -5;
  60.     gDeltas[1].v = 3;
  61.     gDeltas[2].h = 4;
  62.     gDeltas[2].v = -6;
  63.     gDeltas[3].h = 6;
  64.     gDeltas[3].v = 4;
  65.     
  66.     gCurrentImages[0] = 0;
  67.     gCurrentImages[1] = kNumSpaceShipImages / 4;
  68.     gCurrentImages[2] = kNumSpaceShipImages / 2;
  69.     gCurrentImages[3] = kNumSpaceShipImages * 4 / 3;
  70.     
  71.     rgbcKeyColor.red = 0;
  72.     rgbcKeyColor.green = 0;
  73.     rgbcKeyColor.blue = 0;
  74.     
  75.     // recompress PICT images to make them transparent
  76.     for (lIndex = 0; lIndex < kNumSpaceShipImages; lIndex++) 
  77.     {
  78.         ImageDescriptionHandle idh=nil;
  79.         Handle  imageData=nil;
  80.  
  81.         hpicImage = (PicHandle)GetPicture(lIndex +
  82.                                             kFirstSpaceShipPictID);
  83.         DetachResource((Handle)hpicImage);
  84.         
  85.         nErr = RecompressPictureWithTransparency(hpicImage,
  86.                                                 &rgbcKeyColor, 
  87.                                                 nil,
  88.                                                 &gImageDescriptions[lIndex],
  89.                                                 &gCompressedPictures[lIndex]);
  90.         KillPicture(hpicImage);
  91.     }
  92.  
  93.     // create the sprites for the sprite world
  94.     for (lIndex = 0; lIndex < kNumSprites; lIndex++) {
  95.         MatrixRecord    matrix;
  96.  
  97.         SetIdentityMatrix(&matrix);
  98.         
  99.         matrix.matrix[2][0] = ((long)gDestRects[lIndex].left << 16);
  100.         matrix.matrix[2][1] = ((long)gDestRects[lIndex].top << 16);
  101.  
  102. // Step 3.
  103. // Insert "NewSprite.clp" here
  104.  
  105.  
  106.     }
  107. }